package org.lanqiao.heuet.action;

import java.util.List;

import org.lanqiao.heuet.bean.UserInfoBean;
import org.lanqiao.heuet.service.ILoginService;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
/**
 * aciton层是控制转发层
 * 控制转发层调用service层进行业务逻辑处理，并将处理结果转发到不同的结果视图中
 * @author Administrator
 *
 */
public class LoginAction extends ActionSupport {

	/*
	 * struts中服务器段的响应方法返回值是string类型： 常用的 success -- 处理成功 input -- 输入内容有误 error
	 * -- 错误 fail -- 处理失败
	 * 
	 * 这些返回的字符串，和struts.xml配置文件的action中的result标签的name属性的内容时一一对应的
	 * 
	 * 只要是用来从前台页面接受数据的成员变量，都需要生成getter/setter方法
	 * action用来接收数据的变量命名：要求前两个字符小写，后面第二个单词首字母大写的方式命名。
	 * 主要是需要满足前两个字母小写。
	 * 
	 */
	
	/**
	 * action用来从前台获取数据的bean实例对象载体
	 */
	private UserInfoBean userInfoB;

	/**
	 * 使用spring的依赖注入完成改变量的初始化操作
	 */
	private ILoginService loginService;
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 6482572924262132869L;

	
	/**
	 * 定义的登录响应方法
	 * 
	 * @return 结果串
	 */
	public String doLogin() throws Exception {
		// 服务器端默认的请求处理方法
		System.out.println("这里执行的是服务器action的dologin处理方法");
		System.out.println("从前台页面获取的用户名是：" + this.getUserInfoB().getUserName());
		System.out.println("从前台页面获取的用户密码是：" + userInfoB.getUserPsw());

		// 调用service层的登录验证业务逻辑处理方法，完成登录验证的业务逻辑处理
		boolean isLogined = loginService.isLogin(getUserInfoB());
		if (isLogined) {
			// 登录成功，则转发到登录成功页面
			return "logined";

		} else {
			// 登录验证失败，则转发到登录页面继续进行登录
			return "relogin";
		}
	}

	/**
	 * 用户注册处理响应的方法
	 * @return 处理结果串
	 * @throws Exception
	 */
	public String addUserInfo() throws Exception{
		//调用service层进行业务逻辑处理：保存用户注册信息
		loginService.addUserInfo(userInfoB);
		//转发到添加结果显示页面，显示添加的用户信息
		//获取所有的用户信息list
		List<UserInfoBean> lstUsers = loginService.queryAllUserInfo(1);
		//使用session将需要显示的值，传递到前台页面
		//获取当前action的session对象
		ActionContext.getContext().getSession().put("lstUserInfoBs", lstUsers);
		//返回转发结果串
		return "success";
		
	}
	public UserInfoBean getUserInfoB() {
		return userInfoB;
	}

	public void setUserInfoB(UserInfoBean userInfoB) {
		this.userInfoB = userInfoB;
	}

	public ILoginService getLoginService() {
		return loginService;
	}

	public void setLoginService(ILoginService loginService) {
		this.loginService = loginService;
	}

	

}
